# 使用方式上的不同，函数钟有四种参数方式
# 位置参数，关键字参数，缺省参数，不定长参数

# 位置参数：调用函数时根据函数定义的参数位置来传递参数


# 关键字参数：函数调用时通过“键=值”形式来传递参数
def user_info(name, age, sex):
    print(f"名字是：{name}，年龄是：{age}，性别是：{sex}")


user_info(name="rxy", age=20, sex="男")  # 关键字传参
user_info(age=20, name="rxy", sex="男")  # 可以不按照固定顺序
user_info("rxy", age=20, sex="男")  # 位置参数可以与关键字参数混用，混用时位置参数必须在最前面


# 缺省参数：参数可以设定默认值，不传递参数则使用默认值，传递参数则使用传入的
# 设置默认值必须从后向前连续的
def user_info3(name, age, sex="男"):
    print(f"名字是：{name}，年龄是：{age}，性别是：{sex}")


user_info3("xx", 13)
user_info3("xxx", 13, sex="女")


# 不定长参数（可变参数）：当调用函数时不确定该参数个数
# 分为位置传递与关键字传递

def user_info4(*args):  # 位置传递，args为容器元组
    # 传进的所有参数都会被args变量收集，根据传进参数位置合并为一个元组
    print(args)


user_info4("555", 444, "absc")


def user_info5(**kwargs):  # 关键字传递，kwargs为容器字典
    # 参数是“键=值”形式时，所有的“键=值”都会被kwargs接受
    print(kwargs)


user_info5(name="wang", sex=5)
